/**
 * 狗类，继承自动物基类，实现了狗的特有属性和行为
 */
public class Dog extends Animal {
    // 狗是否在摇尾巴的状态
    private boolean waggingTail;

    /**
     * 构造函数，初始化狗的名称
     * @param name 狗的名称
     */
    public Dog(String name) {
        super(name); // 调用父类构造器初始化名称
        this.waggingTail = false; // 默认不摇尾巴
    }

    /**
     * 重写父类的speak方法，实现狗叫的行为
     * 狗叫时会伴随摇尾巴动作
     */
    @Override
    public void speak() {
        System.out.println(getName() + " says: Woof!");
        // 狗叫的时候通常会摇尾巴
        this.waggingTail = true;
        System.out.println(getName() + " is wagging its tail.");
    }

    /**
     * 狗看家的特有行为
     * 看家时狗会保持警觉，停止摇尾巴
     */
    public void housekeep() {
        System.out.println(getName() + " is keeping watch on the house.");
        // 看家时保持警觉，停止摇尾巴
        this.waggingTail = false;
    }

    /**
     * 获取狗是否在摇尾巴
     * @return true表示在摇尾巴，false表示没有
     */
    public boolean isWaggingTail() {
        return waggingTail;
    }

    /**
     * 设置狗的摇尾巴状态
     * @param waggingTail 摇尾巴状态
     */
    public void setWaggingTail(boolean waggingTail) {
        this.waggingTail = waggingTail;
    }
}